// 适配器可被实现为不兼容的方法调用之间的一个代码薄层。
// 如果你有一个具有3个字符串参数的函数，但客户系统拥有的却是一个包含三个字符串元素的对象，可以适配器衔接。
var clientObject = {
	string1: 'foo',
	string2: 'bar',
	string3: 'baz'
};
function interfaceMethod(str1, str2, str3) {

}
function clientToInterfaceAdapter(o) {
	interfaceMethod(o.string1, o.string2, o.string3);
}
// 把整个对象传递给这个函数
clientToInterfaceAdapter(clientObject);

// 从Prototype库的$函数到YUI（Yahoo！User Interface）的get方法的转换
// Prototype $ function.
function $() {
	var element = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = argument[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

/* YUI get method. */
YAHOO.util.Dom.get = function(el) {
	if (YAHOO.lang.isString(el)) {
		return document.getElementById(el);
	}
	if (YAHOO.lang.isArray(el)) {
		var c = [];
		for (var i = 0, len = el.length; i < len; ++i) {
			c[c.length] = YAHOO.util.Dom.get(el[i]);
		}
		return c;
	}
	if (el) {
		return el;
	}
	return null;
}

function PrototypeToYUIAdapter() {
	return YAHOO.util.Dom.get(arguments);
}
function YUIToPrototypeAdapter(el) {
	return $.apply(window, el instanceof Array ? el : [el]);
}

// 从Prototype改投YUI的人来说，只需添加
$ = PrototypeToYUIAdapter;
// 从YUI改投Prototype的人则使用
YAHOO.util.Dom.get = YUIToPrototypeAdapter;
